Many businesses and other types of organizations wish to optimize the manner in which they allocate various resources to reduce costs and improve efficiency. For example, a shipper of goods might wish to optimize the allocation of transportation capacity among multiple competing carriers in a way that minimizes shipping costs while satisfying the shipper's coverage, equipment, service, and other requirements. It is often desirable to optimize the allocation of such resources using computer-based systems that incorporate software specifically tailored to solve optimization problems using standard "brute force" approaches. For example, commercially available integer program solvers such as CPLEX and XPRESS may in some circumstances be used in an attempt to optimize a shipper's allocation of transportation capacity.
As the resource allocation needs of business and other organizations continue to increase in their complexity and importance, the speed, efficiency, and accuracy in which resources are allocated have become increasingly critical to the success of the organizations. However, previous systems and methods for optimizing the allocation of resources are inadequate for many optimization scenarios. For example, integer program solvers such as CPLEX and XPRESS may use a standard branch-and-bound approach in an attempt to solve optimization problems that are formulated as integer programs, but are often unable to solve even relatively small such problems in a brute force manner before overloading the memory of even the most powerful computers. Even where these solvers incorporate additional algorithms or other techniques in an attempt to reduce the size and complexity of the optimization problem, they are often too slow and require too much processing power to be of practical value. These and other deficiencies make previous systems and methods for optimizing allocation of resources inadequate for many purposes.